<?php

/**
 * 队列配置文件
 *
 * @author suning <snsnsky@gmail.com>
 *
 * $Id$
 */

if (php_sapi_name() != 'cli') {
    exit('Daemon can not run in http mode!');
}
set_time_limit(0);
ini_set('memory_limit', '1024M');

define("QUEUE_ROOT", dirname(__DIR__) . '/');
define("QUEUE_LOG", QUEUE_ROOT . 'log/');

$env = get_cfg_var('environment');

if ($env === 'DEV') {
    // 定义开发环境
    define('__ENV__', 'DEV');
    // 全局加密KEY
    define('__KEY__', '92b552a69652022133f061afe7f99c3d');
    // IP地址
    define('__IP__', '218.75.159.114');
} elseif ($env === 'TEST') {
    // 定义测试环境
    define('__ENV__', 'TEST');
    define('__KEY__', '00b8b312e6a98f77fa12595059965c1a');
    define('__IP__', '218.75.159.114');
} else {
    // 定义线上环境
    define('__ENV__', 'ONLINE');
    define('__KEY__', '1c61e67500f1f340b3967a7da9f968d4');
    define('__IP__', '10.0.200.114');
}

define('__MYSQL_IP__', __IP__);
if (__ENV__ == 'DEV') {
    $dev_ip = '127.0.0.1';
    define('__MEMCACHE_IP__', $dev_ip);
    define('__REDIS_IP__', $dev_ip);
    define('__SEARCH_IP__', $dev_ip);
    define('__MONGODB_IP__', $dev_ip);
} else {
    define('__MEMCACHE_IP__', __IP__);
    define('__REDIS_IP__', __IP__);
    define('__SEARCH_IP__', __IP__);
    define('__MONGODB_IP__', __IP__);
}

$__CFG__ = [
    'DEV' => [
        'mysql' => [
            'default' => [
                'w' => ['host' => __MYSQL_IP__, 'user' => 'root', 'password' => '77889900!!@@'],
                'r' => ['host' => __MYSQL_IP__, 'user' => 'root', 'password' => '77889900!!@@'],
            ],
        ],
        'memcache' => [
            'default' => [
                ['host' => __MEMCACHE_IP__, 'port' => 20001],
                ['host' => __MEMCACHE_IP__, 'port' => 20002],
                ['host' => __MEMCACHE_IP__, 'port' => 20003]
            ],
        ],
        'redis' => [
            'user' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7379],
                'r' => ['host' => __REDIS_IP__, 'port' => 7379],
            ],
            'queue' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7380],
                'r' => ['host' => __REDIS_IP__, 'port' => 7380]
            ],
            'mobile' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7381],
                'r' => ['host' => __REDIS_IP__, 'port' => 7381]
            ],
            'notice' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7382],
                'r' => ['host' => __REDIS_IP__, 'port' => 7382]
            ],
            'other' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7383],
                'r' => ['host' => __REDIS_IP__, 'port' => 7383]
            ]
        ],
        'search' => [
            'default' => ['host' => __SEARCH_IP__, 'port' => 9200],
        ],
        'mongodb' => [
            'default' => [
                'host' => __MONGODB_IP__ . ':37017',
                'port' => 27017,
                'user' => 'proxy',
                'password' => 'proxy'
            ],
        ]
    ],
    'TEST' => [
        'mysql' => [
            'default' => [
                'w' => ['host' => __MYSQL_IP__, 'user' => 'root', 'password' => '77889900!!@@'],
                'r' => ['host' => __MYSQL_IP__, 'user' => 'root', 'password' => '77889900!!@@'],
            ],
        ],
        'memcache' => [
            'default' => [
                ['host' => __MEMCACHE_IP__, 'port' => 20001],
                ['host' => __MEMCACHE_IP__, 'port' => 20002],
                ['host' => __MEMCACHE_IP__, 'port' => 20003]
            ],
        ],
        'redis' => [
            'user' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7379],
                'r' => ['host' => __REDIS_IP__, 'port' => 7379],
            ],
            'queue' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7380],
                'r' => ['host' => __REDIS_IP__, 'port' => 7380]
            ],
            'mobile' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7381],
                'r' => ['host' => __REDIS_IP__, 'port' => 7381]
            ],
            'notice' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7382],
                'r' => ['host' => __REDIS_IP__, 'port' => 7382]
            ],
            'other' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7383],
                'r' => ['host' => __REDIS_IP__, 'port' => 7383]
            ]
        ],
        'search' => [
            'default' => ['host' => __SEARCH_IP__, 'port' => 9200],
        ],
        'mongodb' => [
            'default' => [
                'host' => __MONGODB_IP__ . ':27017',
                'port' => 27017,
                'user' => 'proxy',
                'password' => 'proxy'
            ],
        ]
    ],
    'ONLINE' => [
        'mysql' => [
            'default' => [
                'w' => ['host' => __MYSQL_IP__, 'user' => 'root', 'password' => '77889900!!@@'],
                'r' => ['host' => __MYSQL_IP__, 'user' => 'root', 'password' => '77889900!!@@'],
            ],
        ],
        'memcache' => [
            'default' => [
                ['host' => __MEMCACHE_IP__, 'port' => 20001],
                ['host' => __MEMCACHE_IP__, 'port' => 20002],
                ['host' => __MEMCACHE_IP__, 'port' => 20003]
            ],
        ],
        'redis' => [
            'user' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7379],
                'r' => ['host' => __REDIS_IP__, 'port' => 7379],
            ],
            'queue' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7380],
                'r' => ['host' => __REDIS_IP__, 'port' => 7380]
            ],
            'mobile' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7381],
                'r' => ['host' => __REDIS_IP__, 'port' => 7381]
            ],
            'notice' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7382],
                'r' => ['host' => __REDIS_IP__, 'port' => 7382]
            ],
            'other' => [
                'w' => ['host' => __REDIS_IP__, 'port' => 7383],
                'r' => ['host' => __REDIS_IP__, 'port' => 7383]
            ]
        ],
        'search' => [
            'default' => ['host' => __SEARCH_IP__, 'port' => 9200],
        ],
        'mongodb' => [
            'default' => [
                'host' => __MONGODB_IP__ . ':27017',
                'port' => 27017,
                'user' => 'proxy',
                'password' => 'proxy'
            ],
        ]
    ]
];

function runtime_log($classname, $data, $sep = "\t")
{
    $filepath = QUEUE_LOG . $classname . '_' . date("Ymd") . '.log';
    if (!is_array($data)) {
        $data = [$data];
    }
    foreach ($data as $k => &$v) {
        $v = is_string($v) ? $v : serialize($v);

        if (!is_numeric($k)) {
            $v = $k . ':' . $v;
        }
    }
    $data = implode($sep, $data) . "\n";
    $fp = fopen($filepath, 'a+');
    if ($fp) {
        flock($fp, LOCK_EX);
        fwrite($fp, $data);
        flock($fp, LOCK_UN);
        fclose($fp);

        return true;
    }

    return false;
}

$cfg = $__CFG__[__ENV__];
